﻿using System.Collections.Generic;
using System.ComponentModel;
using SAPPDI.Entitys.Annotations;

namespace SAPPDI.Entitys
{
    public class Interiores : INotifyPropertyChanged
    {

        private int _Paginas;
        public int Paginas
        {
            get
            {
                return _Paginas;
            }
            set
            {
                _Paginas = value;
                NotifyPropertyChanged("Paginas");
            }
        }


        private double _Gramaje;
        public double Gramaje
        {
            get
            {
                return _Gramaje;
            }
            set
            {
                _Gramaje = value;
                NotifyPropertyChanged("Gramaje");
            }
        }

        private TipoPapel _SelectedTipoPapel;
        public TipoPapel SelectedTipoPapel
        {
            get
            {
                return _SelectedTipoPapel;
            }
            set
            {
                _SelectedTipoPapel = value;
                if (_SelectedTipoPapel != null)
                    this.Papel = _SelectedTipoPapel.Papels;
                NotifyPropertyChanged("SelectedTipoPapel");
            }
        }

        private Papel _SelectedPapel;
        public Papel SelectedPapel
        {
            get
            {
                return _SelectedPapel;
            }
            set
            {
                _SelectedPapel = value;
                NotifyPropertyChanged("SelectedPapel");
            }
        }

        private List<Papel> _papels;

        public List<Papel> Papel
        {
            get { return this._papels; }
            set
            {
                this._papels = value;
                NotifyPropertyChanged("Papel");
            }
        }


        private List<TipoPapel> _Tipopapels;

        public List<TipoPapel> TipoPapels
        {
            get { return this._Tipopapels; }
            set
            {
                this._Tipopapels = value;
                NotifyPropertyChanged("TipoPapels");
            }
        }

        private bool _is4x4;

        public bool Is4x4
        {
            get { return _is4x4; }
            set
            {
                this._is4x4 = value;
                NotifyPropertyChanged("Is4x4");
            }
        }

        private bool _is1x1;

        public bool Is1x1
        {
            get { return _is1x1; }
            set
            {
                this._is1x1 = value;
                NotifyPropertyChanged("Is1x1");
            }
        }
        private bool _is4x1;

        public bool Is4x1
        {
            get { return _is4x1; }
            set
            {
                this._is4x1 = value;
                NotifyPropertyChanged("Is4x1");
            }
        }

        private bool _isOtros;

        public bool IsOtros
        {
            get { return _isOtros; }
            set
            {
                this._isOtros = value;
                NotifyPropertyChanged("IsOtros");
            }
        }


        private int _tintaUno;

        public int TintaUno
        {
            get { return _tintaUno; }
            set
            {
                this._tintaUno = value;
                NotifyPropertyChanged("TintaUno");
            }
        }


        private int _tintaDos;

        public int TintaDos
        {
            get { return _tintaDos; }
            set
            {
                this._tintaDos = value;
                NotifyPropertyChanged("TintaDos");
            }
        }

        private double _ancho;

        public double Ancho
        {
            get { return _ancho; }
            set
            {
                this._ancho = value;
                NotifyPropertyChanged("Ancho");
            }
        }


        private double _largo;

        public double Largo
        {
            get { return _largo; }
            set
            {
                this._largo = value;
                NotifyPropertyChanged("Largo");
            }
        }

private SizePagina _sizePagina;

        private Pliego _pliego;

        public Pliego PliegoSeleccionado
        {
            get { return this._pliego; }
            set
            {
                _pliego = value;
                NotifyPropertyChanged("PliegoSeleccionado");
            }
        }

        public SizePagina TamañoPagina
        {
            get { return this._sizePagina; }
            set
            {
                this._sizePagina = value;
                NotifyPropertyChanged("TamañoPagina");
            }
        }

        private bool _isGramos;

        public bool IsGramos
        {
            get { return _isGramos; }
            set
            {
                this._isGramos = value;
                NotifyPropertyChanged("IsGramos");
            }
        }
        private bool _isPuntos;

        public bool IsPuntos
        {
            get { return _isPuntos; }
            set
            {
                this._isPuntos = value;
                NotifyPropertyChanged("IsPuntos");
            }
        }

        public string GetTintas()
        {
            if (this.Is1x1)
            {
                return "1x1";
            }
            if (this.Is4x1)
            {
                return "4x1";
            }
            if (this.Is4x4)
            {
                return "4x4";
            }
            if (this.IsOtros)
            {
                return this.TintaUno.ToString() + "x" + this.TintaDos.ToString();
            }
            return string.Empty;
        }

        public Interiores()
        {
            PliegoSeleccionado = new Pliego(1, 1);
            TamañoPagina = SizePagina.Entero;
            this._is4x4 = true;
            this._isGramos = true;
        }

        public event PropertyChangedEventHandler PropertyChanged;

        [NotifyPropertyChangedInvocator]
        protected virtual void NotifyPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
